package svc

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/xormplus/xorm"
	"go-zero-demo/monitor/internal/config"

)

type ServiceContext struct {
	Config config.Config
	Engine *xorm.Engine
}

func NewServiceContext(c config.Config) *ServiceContext {
	//获取xorm引擎
	var err error
	engine, err := xorm.NewMySQL(xorm.MYSQL_DRIVER,c.DataSourceName)
	//如果出错就GameOver了
	if err != nil {
		panic(err)
	}
	//注册SqlMap配置，可选功能，如应用中无需使用SqlMap，可无需初始化
	//此处使用xml格式的配置，配置文件根目录为"./sql/oracle"，配置文件后缀为".xml"
	err = engine.RegisterSqlMap(xorm.Xml("sql/mysql", ".xml"))
	if err != nil {
		panic(err)
	}
	//是否打印sql
	engine.ShowSQL(true)
	//设置连接池的空闲数大小
	engine.SetMaxIdleConns(10)
	//最大打开连接数
	engine.SetMaxOpenConns(20)
	return &ServiceContext{Config: c, Engine: engine}
}
